\documentclass[10pt,a4paper]{article}
\usepackage[T1]{fontenc}
\usepackage[brazil]{babel}
\usepackage[utf8]{inputenc}


\usepackage{ae,aecompl}
\usepackage{pslatex}
\usepackage{epsfig}
\usepackage{geometry}
\usepackage{url}
\usepackage{textcomp}
\usepackage{subfig}
\usepackage{indentfirst}
\usepackage{textcomp}
\usepackage{color}
\usepackage{setspace}
\usepackage{verbatim}
\usepackage{mathtools}
\usepackage{amsmath}
\usepackage{multicol}

\usepackage{listings}
    

\usepackage[compact]{titlesec}
\titlespacing{\section}{0pt}{*0}{*0}
\titlespacing{\subsection}{0pt}{*0}{*0}
\titlespacing{\subsubsection}{0pt}{*0}{*0}
 \lstset{
	 language=R,  	
         basicstyle=\footnotesize\ttfamily, % Standardschrift
         numbers=left,               % Ort der Zeilennummern
         numberstyle=\tiny,          % Stil der Zeilennummern
         %stepnumber=2,               % Abstand zwischen den Zeilennummern
         numbersep=5pt,              % Abstand der Nummern zum Text
         tabsize=2,                  % Groesse von Tabs
         extendedchars=true,         %
         breaklines=true,            % Zeilen werden Umgebrochen
         classoffset=0,
         keywordstyle=\color{blue},
         classoffset=1,
         morekeywords={factor},keywordstyle=\color{red},
         classoffset=0,
         % morekeywords={factor},
         % keywordstyle=\color{blue},
         % keywordstyle=\color{red},
         % keywordstyle=[1]\textbf,    % Stil der Keywords
         % keywordstyle=[2]\textbf,    %
         % keywordstyle=[3]\textbf,    %
         % keywordstyle=[4]\textbf,   \sqrt{\sqrt{}} %
         stringstyle=\color{green}\ttfamily, % Farbe der String
         showspaces=false,           % Leerzeichen anzeigen ?
         showtabs=false,             % Tabs anzeigen ?
         xleftmargin=17pt,
         framexleftmargin=10pt,
         framexrightmargin=2pt,
         framexbottommargin=4pt,
         % backgroundcolor=\color{lightgray},
         showstringspaces=false      % Leerzeichen in Strings anzeigen ?        
       }
       \DeclareCaptionFont{white}{\color{white}}
       \DeclareCaptionFont{green}{\color{green}}
       \DeclareCaptionFormat{listing}{\colorbox[cmyk]{0.43, 0.35, 0.35,0.01}{\parbox{\textwidth}{\hspace{15pt}#1#2#3}}}
      
\linespread{1.5}
\geometry{ 
  a4paper,	% Formato do papel
  tmargin=25mm,	% Margem superior
  bmargin=25mm,	% Margem inferior
  lmargin=20mm,	% Margem esquerda
  rmargin=20mm,	% Margem direita
  footskip=10mm	% Espaço entre o rodapé e o fim do texto
}
\include{abaco} 


\begin{document}
% CAPA
\begin{titlepage}
  \thispagestyle{empty}
  \begin{center} {\large \textbf{UNIVERSIDADE~ESTADUAL~DE~CAMPINAS}} \end{center}
  \begin{center} {\large INSTITUTO~DE~COMPUTAÇÃO}                    \end{center}
  \vspace{0.1cm}
  \begin{center}
    \begin{minipage}[tl]{31mm}
      \ABACO{1}{9}{6}{9}{1}
    \end{minipage}
  \end{center}
  \vspace{0.3cm}
  \begin{center} 
    {\large \textsc{Clusterização de Imagens }} 
    \\\vspace{0.5cm}
    {\textsl{Laboratório individual de MC906}}
    \\\vspace{1cm}
    \begin{tabular}{rl}
      \textbf{Aluno}:        Tiago~Chedraoui~Silva & 
      \textbf{RA}:        082941 \\
    \end{tabular}
  \end{center}
  \vspace{0.5cm}

  \begin{abstract}
  \end{abstract}
  % Sumário
  \tableofcontents
\end{titlepage} 

\vspace{2mm}

\section{Parte 1}

\subsection*{Descrição}
Crie a funcionalidade de desenhar a representação gráfca, imagem 2D, de um elemento
qualquer, permitindo que essas intensidades sejam números reais no intervalo [0,16].
\subsection*{Resultado}
Criou-se a funcionalidade de impressão \emph{MatrixToPGM <- function (
  vect )}, em que dado um vetor, cria-se um arquivo de extensão pgm,
cujos conteúdo (cabeçalho mais os dados) são:
\begin{verbatim}
P2  /* formato PGM */
8 8 /* Tamanho horizontal e vertical da image */
16  /* Número máximo de níveis de cinza */
vetor /*sequência de 64 inteiros que descrevem minha imagem */
\end{verbatim}

Função pode ser vista na linha 220 do anexo.

\section{Parte 2}
\subsection*{Descrição}
Usando uma das técnicas vistas em aula (e.g., K-Means) clusterize os
dados em 10 grupos
\subsection*{Resultado}
Criou-se a função myKmean que dado um vetor com 10 centros,
separava-se os vetores em x em 10 grupos de acordo com a proximidade
do centros, em que o ponto faz parte do grupo cujo centróide ele está
mais próximo. Após a divisão, recalculá-se o centro do grupo. O
algoritmo para quando não há mais mudança nos centróides, ou quanto
atingir-se 100 iterações. Observação: para 30 iterações encontrou-se
um centro para a parte 3.
OBS: Função kmean linha 97 do anexo.

\section{Parte 3}
\subsection*{Descrição}
Usando a funcionalidade de impressão, imprima o centróide de cada grupo

\subsection*{Resultado}
Utilizando a função \emph{CentersToPGM <- function (vect , name )},
passamos como parâmetro o nosso vetor de tamanho 10 que contém os
centróides de cada grupo.
Nossa saída é uma imagem do centróide do grupo.
Como $elementos \in {0,1...,9}$ é esperado que haja convergência do
de cada centro para um número. Ou seja, nosso centróide do grupo 1 se
desenhado deve ser um 0, o centróide do grupo 2 um número 1, e assim
por diante.
O resultado obtido, após 29 iterações, pode ser visto no gráfico abaixo:
\begin{figure}[h!]
\begin{center}
{\includegraphics{code/img/1}}
{\includegraphics{code/img/2}}
{\includegraphics{code/img/3}}
{\includegraphics{code/img/4}}
{\includegraphics{code/img/5}}
{\includegraphics{code/img/6}}
{\includegraphics{code/img/7}}
{\includegraphics{code/img/8}}
{\includegraphics{code/img/9}}
{\includegraphics{code/img/10}}
\end{center}
\label{fig:center}
\caption{Centróides dos grupos de 0 a 9 respectivamente, semente é um
  ponto do possível grupo}
\end{figure}

Logo nossos centróides, convergiram para um dígito conforme
esperado. Vale resaltar que o resultado foi possível, possui para o
métodos k-mean implementado, nossa semente inicial foi um ponto possívelmente já
pertencente ao grupo. Por exemplo, nossa semente inicial para o grupo
um, já era um dígito zero, para o grupo dois um dígito um e assim por diante.
Porém, selecionando semestes randomicas, algumas sementes ficaram sem
grupo.
O que pode ser verificado nas figuras abaixo:
\begin{figure}[h!]
\begin{center}
{\includegraphics{code/img/r1}}
{\includegraphics{code/img/r2}}
{\includegraphics{code/img/r3}}
{\includegraphics{code/img/r4}}
{\includegraphics{code/img/r5}}
{\includegraphics{code/img/r6}}
{\includegraphics{code/img/r7}}
{\includegraphics{code/img/r8}}
{\includegraphics{code/img/r9}}
{\includegraphics{code/img/r10}}
\end{center}
\label{fig:center}
\caption{Centróides dos grupos de 0 a 9 respectivamente - sementes randômicas}
\end{figure}

Pode-se perceber que além de para alguns centros nenhum ponto
convergir para ele, para os outros a figura possui um imprecisão,
maior que para o caso em que as sementes são escolhidas como um ponto
do grupo.

\section{Parte 4}
\subsection*{Descrição}
Analise a sensibilidade dos grupos modificando as sementes iniciais

\subsection*{Resultado}
Alterando a semente para um valor aleatório como visto, um grupo pode
ficar sem pontos. 
Agora, se considerarmos como sementes pontos dos grupos, dependendo
das semenstes obtivemos centros diferentes dos esperados.
Na primeira semente escolhida, os centros convergiram como era
esperado, mas escolhendo outros pontos os grupos 4,8,9,10 obtiveram centróides diferentes.
Mas, vale ressaltar que obteve todos os números, ou seja, os centros
convergiram, mas não de acordo com a semente inicial.

O que pode ser verificado nas figuras abaixo:
\begin{figure}[h!]
\begin{center}
{\includegraphics{code/img/n1}}
{\includegraphics{code/img/n2}}
{\includegraphics{code/img/n3}}
{\includegraphics{code/img/n4}}
{\includegraphics{code/img/n5}}
{\includegraphics{code/img/n6}}
{\includegraphics{code/img/n7}}
{\includegraphics{code/img/n8}}
{\includegraphics{code/img/n9}}
{\includegraphics{code/img/n10}}
\end{center}
\label{fig:center}
\caption{Centróides dos grupos de 0 a 9 respectivamente - novas sementes }
\end{figure}


 \lstset{
	 language=R,  	
         basicstyle=\tiny\ttfamily, % Standardschrift
         numbers=left,               % Ort der Zeilennummern
         numberstyle=\tiny,          % Stil der Zeilennummern
         %stepnumber=2,               % Abstand zwischen den Zeilennummern
         numbersep=5pt,              % Abstand der Nummern zum Text
         tabsize=2,                  % Groesse von Tabs
         extendedchars=true,         %
         breaklines=true,            % Zeilen werden Umgebrochen
         classoffset=0,
         keywordstyle=\color{blue},
         classoffset=1,
         morekeywords={factor},keywordstyle=\color{red},
         classoffset=0,
         % morekeywords={factor},
         % keywordstyle=\color{blue},
         % keywordstyle=\color{red},
         frame=b,         
         % keywordstyle=[1]\textbf,    % Stil der Keywords
         % keywordstyle=[2]\textbf,    %
         % keywordstyle=[3]\textbf,    %
         % keywordstyle=[4]\textbf,   \sqrt{\sqrt{}} %
         stringstyle=\color{green}\ttfamily, % Farbe der String
         showspaces=false,           % Leerzeichen anzeigen ?
         showtabs=false,             % Tabs anzeigen ?
         xleftmargin=17pt,
         framexleftmargin=10pt,
         framexrightmargin=2pt,
         framexbottommargin=4pt,
         % backgroundcolor=\color{lightgray},
         showstringspaces=false      % Leerzeichen in Strings anzeigen ?        
       }
 %      \captionsetup[lstlisting]{format=listing,labelfont=white,textfont=white, singlelinecheck=false, margin=0pt, font={bf,footnotesize}}


\section{Parte 5}
\subsection*{Descrição}
Para cada grupo, calcule os dois componentes principais (PCA) e imprima os pontos
$m + s1_v1$ e $m-s1*v1$, onde m é a media dos elementos do grupo, s1 é o desvio padrão
na direção v1 (que é o componente principal), e os pontos $m + s2*v2$ e $m-s2*v2$, onde
v2 é o segundo componente principal, e s2 o desvio padrão nessa direção).

\subsection*{Resultado}

Utilizando as funções PrincipalComp (linha 170 do anexo), CoVarMatrix
(linha 209 do anexo),groupDiv (linha 160 do anexo),centroOrigem (linha
150 do anexo), pode-se calcule os dois componentes principais (PCA)

A função groupDiv divide os pontos de acordo com seu grupo, ou seja,
rotorna todos os pontos que pertencem ao grupo enviado como entrada.

A função centro origem colocam o centróide do grupo como centro.

A função CoVarMatrix retornar a mestrix de covariância S.

A função principalComp, dado S, o centro e os pontos do grupo, faz a
decomposição da matrix S em S=UDV, as componentes a serem utilizadas
são as duas primeiras colunas de U (cada uma com 64 linhas).

A partir disso calcula-se o desvio padrão dos pontos às colunas de U.
Posteriormente fazemos m+s1*v1, o qual nos dá um vetor de tamanho 64.
Fazendo o produto escalar dos pontos com as componentes principais, podemos 
plotar os pontos em um gráfico 2D obtendo:

O resultado é encontrado abaixo.
\begin{figure}[h!]
\begin{center}
{\includegraphics[scale=0.5]{code/relatorio/q5}}
\end{center}
\label{fig:center}
\caption{Q5}
\end{figure}

O resultado dos  (m+-s1*v1) e  (m+-s2*v2) pode ser visto abaixo:
\begin{multicols}{2}
\lstinputlisting[language=R,caption={Laboratório 1}]{code/relatorio/pca.txt}
\end{multicols}


% Necessária?
% \section{Agradecimentos}

% ******************************************************
% REFERENCIAS BIBLIOGRÁFICAS
% ******************************************************
% \section{Referências}
\bibliographystyle{plain}
\begin{small}
  \bibliography{referencias}
\end{small}

\newpage


\section{Anexo}
\begin{multicols}{2}
\lstinputlisting[language=R,caption={Laboratório 1}]{code/relatorio/lab1.R}
  
\end{multicols}

\end{document}
